<?php
class ContatoController extends BaseController{
	private $codeType='Code-39';
	private $countBarCode=11;
	private $contatos = array();

	private function incluirContatos($endereco_arquivo, $evento){
		$dados = array();
		$index = (int) 0;
		$authNamespace = new Zend_Session_Namespace('Zend_Auth');

		$arquivo = fopen("C:\\Temp\\barcodes.txt", "r+");
		if (!$arquivo){
			echo "<BR> Arquivo não foi encontrado.";
		}
		while(!feof($arquivo))
	  	{
	    	$linha   = fgets($arquivo,999);
	    	$barCode = substr($linha, 0, strpos($linha, ';'));
	    	$codeType= trim(substr($linha, strpos($linha, ';')+1, strpos(substr($linha, strpos($linha, ';')+1),';')));
	    	$dateHora= trim(substr($linha, strpos($linha, ';', strlen($codeType)+strlen($barCode))+1));
	    	$date    = trim(substr($dateHora, strpos($dateHora, ';')+1));
	    	//echo $barCode.'---'.$this->codeType.'='.$codeType.'-----'.strlen($barCode).'='.$this->countBarCode.'<br>';
	    	if ($codeType==$this->codeType && strlen($barCode)==$this->countBarCode){
	    		$index++;
		    	$dados[$index][0] =$barCode;
    			$dados[$index][1] =$date;
    			$dados[$index][2] =$codeType;
	    		if ($index==1){
		  			$expositorBarCode=$barCode;
		  		}
	    	}
	  	}
		fclose($arquivo);

		//Carregar o Expositor
		$acesso= $this->getAcesso($expositorBarCode);
		$fisica= new Fisica();
		$fisica->load($acesso->id_participante);

		sort($dados);
		$code="";
		$codigosBarras="";
		for($i=0; $i<count($dados); $i++){
			if ($code!=$dados[$i][0] && $dados[$i][0]!=$expositorBarCode){
				$codigosBarras[]=$dados[$i];
			}
			$code=$dados[$i][0];
		}
		for($i=0; $i<count($codigosBarras); $i++){
			$contatos[]=$this->criarContato($fisica->id_juridica, $codigosBarras[$i][0], $codigosBarras[$i][1], $evento, $authNamespace->id_usuario);
		}

		//Salvar os contatos realizados
		for($i=0; $i<count($contatos); $i++){
			try{
    			$contatos[$i]->salvar();
			}catch (Exception $e){
    			null;
			}
		}
	}

	private function getAcesso($barCode){
		$autenticacao = new Autenticacao();
		$autenticacao->loadAutenticacao($barCode);

		$acesso = new AcessoEvento();
		$acesso->_load($autenticacao->id_acesso);

		return $acesso;
	}

	private function criarContato($expositor, $barCode, $dtContato, $evento, $usuario){
		$acesso = $this->getAcesso($barCode);

		$contato = new Contato();
		$contato->id_expositor   =$expositor;
		$contato->id_evento   	 =$evento;
		$contato->id_participante=$acesso->id_participante;
		$contato->dt_contato     =$dtContato;
    	$contato->id_usuario	 =$usuario;
    	$contato->dt_alteracao	 =date('Y-m-d');

		return $contato;
	}

	public function indexAction(){
	    $this->view->title 	= "Consultar contato";
	    $this->view->action = $this->view->baseUrl . '/contato/index';
		$this->view->parametrosConsulta = "";//$this->view->baseUrl . "/contato/index";

	    $authNamespace = new Zend_Session_Namespace('Zend_Auth');
		$filter = new Zend_Filter_StripTags();
		$contato = new Contato();
		$usuario = new Login();
		$usuario->load($authNamespace->id_usuario);
		$fisica  = new Fisica();
		$fisica->load($usuario->id_pessoa);
		$evento		 =null;
		$participante=null;
		$empresa	 =null;
       	$order = "1";
       	$asc = 0;
		$this->view->action='index';

		$this->montarParametros($this->_getAllParams());
		if ((strtolower($_SERVER['REQUEST_METHOD']) == 'post') || ($this->parametrosConsulta!=NULL)){
			if (strtolower($_SERVER['REQUEST_METHOD']) == 'post'){
				$evento 		= (int) $this->_request->getPost('evento');
				$empresa 		= $filter->filter($this->_request->getPost('empresa'));
				$participante	= $filter->filter($this->_request->getPost('participante'));
			}else{
				$evento 		= (int)$this->_getParam('evento');
				$empresa 		= trim($filter->filter($this->_getParam('empresa')));
				$participante	= trim($filter->filter($this->_getParam('participante')));
       		 	$order = (int)$this->_getParam('order');
       	 		$asc = trim($filter->filter($this->_getParam('asc')));
			}
			$this->view->dadosConsulta= $contato->buscar($fisica->id_juridica, $evento, $participante, $empresa, $order, $asc);
		}
		$this->view->evento       = $evento;
		$this->view->participante = $participante;
		$this->view->empresa      = $empresa;
		$this->view->order	      =$order;
		$this->view->ordemAtual=$order;
		$this->view->asc=$asc;
		$this->render();
    }

	function addAction(){
		$this->view->title 	= "Incluir contatos";
		$this->view->action = $this->view->baseUrl . '/contato/add';;
		$filter = new Zend_Filter_StripTags();
		$evento 		="";
		$expositor 		="";
		$codigoBarras   ="";
		$enderecoArquivo="";

		if ((strtolower($_SERVER['REQUEST_METHOD']) == 'post')){
			$evento 		= (int) $this->_request->getPost('evento');
			$expositor 		= (int) $this->_request->getPost('expositor');
			$codigoBarras   = $filter->filter($this->_request->getPost('cod_barra'));
			$enderecoArquivo= $this->_request->getPost('arquivo');
			$this->incluirContatos($enderecoArquivo, $evento);
			UtilController::alert('Contatos importados com sucesso.');
			
		}
		$this->view->evento=$evento;
		$this->view->expositor=$expositor;
		$this->view->codigoBarras=$codigoBarras;
		$this->view->enderecoArquivo=$enderecoArquivo;

		$this->render();
	}


}
